﻿<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="AAuto" /> 
<title>创建web窗体</title>
<link href="../style.css" rel="stylesheet" type="text/css" />
</head>

<body>
<div id="maincontent">
<h1>创建web窗体</h1>
 <div class="desc">参考:<a href="../web/html.html">html</a> </div>
  <div>
    <h2>什么是 web窗体</h2>
    <p>web窗体可以存取控制网页内容，并可以与网页内容进行交互，web窗体可以实现以下功能：<br />
      <br />
      <strong>1、浏览并控制网页</strong><br />
      使用web窗体可以显示网页，并自由读取、修改、控制网页内容。也可以在网页中使用脚本调用AAuto代码。<br />
      通过web窗体，你可以使用任意网页编程方式，如javascipt,甚至flash、ActiveX。最重要的是，你不需要学习新的内容，只要会做网页就会轻松上手。 <br />
      <br />
      <strong>2、使用网页设计漂亮的图形用户界面(GUI)</strong><br />
      使用web窗体，你可以通过编写网页轻松实现自定义的程序界面。网页拥有比传统UI更丰富的图形展现技术,也有很多成熟的网页制作工具,使用web窗体,只要你会做网页就可以做出非常漂亮眩目的界面.而且调用AAuto函数也非常方便.<br />
    </p>
  </div> 
  <div>
    <h2>创建 WEB应用程序<a name="project" id="project"></a></h2>
  <p><img src="img/newproj.jpg" width="450" height="387" />    
</div>
 <div>
    <h2>添加 WEB窗体<a name="form" id="form"></a></h2>
    <p><img src="img/newform.jpg" width="225" height="191" alt="新建web窗体" />        
    <p>点击快速访问工具栏的第一个按钮&quot;新建文件&quot;右侧的下拉按钮,<br />
    在弹出的下拉菜单中点击&quot;web窗体&quot;,创建新的web窗体.    </div>
    
  <div>
    <h2>编辑web窗体源代码</h2>
    <p><img src="img/newform2.jpg" width="333" height="251" alt="编辑web窗体源代码" />
    <p>打开web窗体,点击&quot;代码视图&quot;,或按Ctrl+U快捷键打开web窗体源代码.    
    </p>
    <pre>import win.ui;
import win.ui.menu;
import web.form;

<span class="comment">/*DSG{{*/</span>
var winform = win.form(parent=...; min=1
    ;bottom=249;scroll=1;text="AAuto Form";right=349;max=1 )
winform.add(  )
<span class="comment">/*}}*/</span>

<span class="comment">//创建web窗体</span>
var wb = web.form( winform 
	,<span class="comment">//可输入_UIFLAG_ 前缀的常量自定义外观</span>
	,<span class="comment">//可输入_DLCTL_ 前缀的常量以控制下载行为</span>
	);


<span class="comment">//打开目标网站</span>
wb.go("http://www.ecranesoft.com/")
<span class="comment">//显示窗体</span>
winform.show(true) 
wb.wait("ecranesoft");<span class="comment">//等待指定网址,可以使用模式匹配语法</span>


<span class="comment">//进入消息循环</span>
win.loopMessage();
return wb,winform;</pre>
    <p><span class="comment">/*DSG{{*/</span>....<span class="comment">/*}}*/</span> 这中间的部份是窗体设计器生成的代码,这里生成的实际上是一个普通的windows窗体.<br />
      <br />
    而web.form是一个装饰类,可以在现有窗口对象上插入网页浏览器,并返回一个浏览器对象wb.通过浏览器对象就可以控制网页、从而实现web编程.</p>
    <div class="quote">
      <p>装饰类是指的该类用于装饰被装饰的对象,以添加行为和属性.<br />
      装饰类一般并不改变对象的本质,这就好象往墙上刷涂料，无论怎么刷改变的只是外观，墙还是墙。</p>
      <p>这里web.form用来装饰winform对象,从一个&quot;普通的窗口&quot;改变为&quot;可以浏览网页的窗口&quot;,但窗口还是窗口,winform对象依然可以象普通窗口那样使用. </p>
      <p>装饰类可以用于不同的对象,例如,你可以将winform转换为web窗口,也可以将一个普通的static文本框控件转换为web窗口.</p>
      <p>装饰者与被装饰者是has-a关系,而不是is-a关系,在静态语言里装饰指组合关系.<br />
      而在AAuto语言里,通过继承也可以实现装饰类.可以实现一些非常有趣的设计模式,例如我们常用的util.metaProperty</p>
    </div>
  </div>
<div>
  <h2>web.form 构造函数
  </h2>
  <p>&nbsp;</p>
  <p><strong>1、函数原型：</strong><br />
  </p>
  <pre><span class="comment">//创建web窗体</span>
var wb = web.form( 窗口对象 
	,<span class="comment"></span><span class="comment">//可输入_UIFLAG_ 前缀的常量自定义外观</span>
	,<span class="comment">//可输入_DLCTL_ 前缀的常量以控制下载行为</span>
	);</pre>
  <div class="tip">&nbsp;本手册中约定使用 wb变量名表示web.form类创建的web窗体对象.使用ele表示web窗体中的元素对象,这也是AAuto中默认约定具有特殊意义的变量名,不应将这些默认变量名用于其他目的.</div>
  <p><br />
    <strong>2、函数说明：</strong><br />
    <br /> 
    web.form是一个类,其构造函数可以在现有窗口对象中插入浏览器控件.<br />
    窗口对象可以是一个win.form对象,也可以是窗体上的控件,例如static控件.</p>
  <p>第二个参数可以使用一个或多个<span class="comment">_UIFLAG_ 前缀的常量</span>自定义外观,多个常量之间用位或操作符( | ) 连接.<br />
    可选参数如下:</p>
  <table class="dataintable">
    <tr>
      <th>字段</th>
      <th>字段</th>
    </tr>
    <tr>
      <td>_UIFLAG_DIALOG</td>
      <td>禁止选中文本( 用于 web ui )</td>
    </tr>
    <tr>
      <td> _UIFLAG_SCROLL_NO</td>
      <td>禁用滚动条</td>
    </tr>
    <tr>
      <td>_UIFLAG_NO3DBORDER</td>
      <td>禁用所有窗口3D边框</td>
    </tr>
    <tr>
      <td>_FLAG_NO3DOUTERBORDER</td>
      <td>禁用顶层窗口3D边框</td>
    </tr>
    <tr>
      <td>_UIFLAG_DISABLE_HELP_MENU</td>
      <td>在菜单中移除帮助菜单</td>
    </tr>
    <tr>
      <td>_UIFLAG_DISABLE_SCRIPT_INACTIVE</td>
      <td>窗口激活以前不运行网页脚本</td>
    </tr>
    <tr>
      <td>_UIFLAG_OPENNEWWIN</td>
      <td>在新窗口打开链接</td>
    </tr>
    <tr>
      <td>_UIFLAG_FLAT_SCROLLBAR</td>
      <td>显示平面滚动条</td>
    </tr>
    <tr>
      <td>_UIFLAG_ACTIVATE_CLIENTHIT_ONLY</td>
      <td>仅在用户点击客户区时激活(非客户区指滚动条等位置)</td>
    </tr>
    <tr>
      <td>_UIFLAG_URL_ENCODING_DISABLE_UTF8</td>
      <td>禁用UTF8发送URL</td>
    </tr>
    <tr>
      <td>_UIFLAG_URL_ENCODING_ENABLE_UTF8</td>
      <td>使用UTF8发送URL</td>
    </tr>
    <tr>
      <td>_UIFLAG_ENABLE_FORMS_AUTOCOMPLETE</td>
      <td>允许表单自动完成</td>
    </tr>
    <tr>
      <td>_UIFLAG_ENABLE_INPLACE_NAVIGATION</td>
      <td>在点击邮件等链接时，打开相关应用程序，而不是新开窗口</td>
    </tr>
    <tr>
      <td>_UIFLAG_NOTHEME</td>
      <td>使用主题</td>
    </tr>
    <tr>
      <td>_UIFLAG_THEME</td>
      <td>禁用主题</td>
    </tr>
    <tr>
      <td>_UIFLAG_NOPICS</td>
      <td>禁用内容分级</td>
    </tr>
    <tr>
      <td>_UIFLAG_DIV_BLOCKDEFAULT</td>
      <td>编辑模式回车输入div</td>
    </tr>
    <tr>
      <td>_UIFLAG_DISABLE_EDIT_NS_FIXUP</td>
      <td>编辑模式禁用名字空间修正</td>
    </tr>
    <tr>
      <td>_UIFLAG_LOCAL_MACHINE_ACCESS_CHECK</td>
      <td>防止远程网页导航到本地计算机</td>
    </tr>
    <tr>
      <td>_UIFLAG_DISABLE_UNTRUSTEDPROTOCOL</td>
      <td>禁止非信任协议,包含 ms-its, ms-itss, its,mk:@msitstore</td>
    </tr>
  </table>
  <p>第三个参数可使用_DLCTL_前缀的常量以控制下载行为,多个常量之间用位或操作符( | ) 连接.<br />
    <br />
可选参数如下:</p>
  <table class="dataintable">
    <tr>
      <th>字段</th>
      <th>字段</th>
    </tr>
    <tr>
      <td>_DLCTL_DLIMAGES </td>
      <td>允许从服务器下载图片,如果指定了第三个参数,未指定指标志,则网页不下载任何图片.</td>
    </tr>
    <tr>
      <td>_DLCTL_VIDEOS </td>
      <td>允许从服务器下载视频片断,如果指定了第三个参数,未指定指标志,则网页不下载任何视频片断.</td>
    </tr>
    <tr>
      <td>_DLCTL_BGSOUNDS</td>
      <td>允许播放文档指定的背景声音</td>
    </tr>
    <tr>
      <td>_DLCTL_NO_SCRIPTS</td>
      <td>web窗体不执行任何页面脚本(指javascript等)</td>
    </tr>
    <tr>
      <td>_DLCTL_NO_JAVA </td>
      <td>web窗体不执行任何 Java applet</td>
    </tr>
    <tr>
      <td>_DLCTL_NO_RUNACTIVEXCTLS</td>
      <td>web窗体不执行文档中的任何 ActiveX 控件；</td>
    </tr>
    <tr>
      <td>_DLCTL_NO_DLACTIVEXCTLS </td>
      <td>web窗体不下载文档中的任何 ActiveX 控件；</td>
    </tr>
    <tr>
      <td>_DLCTL_DOWNLOADONLY </td>
      <td>web窗体下载网页,但不显示</td>
    </tr>
    <tr>
      <td>_DLCTL_NO_FRAMEDOWNLOAD </td>
      <td>web窗体对包含框架的页面进行语法分析但不下载任何帧， 同时忽略框架，</td>
    </tr>
    <tr>
      <td>_DLCTL_RESYNCHRONIZE </td>
      <td>web窗体忽略缓存中的数据并向服务器请求更新</td>
    </tr>
    <tr>
      <td>_DLCTL_PRAGMA_NO_CACHE</td>
      <td>迫使请求发送给服务器并忽略代理(这里一般指服务端缓存)，即使代理指明数据是最新的也是如此.</td>
    </tr>
    <tr>
      <td>_DLCTL_NO_METACHARSET </td>
      <td>隐藏文档中的 META 元素指示的字符集；</td>
    </tr>
    <tr>
      <td>_DLCTL_URL_ENCODING_DISABLE_UTF8</td>
      <td>禁止 UTF-8 编码</td>
    </tr>
    <tr>
      <td>_DLCTL_URL_ENCODING_ENABLE_UTF8</td>
      <td>允许 UTF-8 编码</td>
    </tr>
    <tr>
      <td>_DLCTL_NOFRAMES</td>
      <td>禁止框架</td>
    </tr>
    <tr>
      <td>_DLCTL_FORCEOFFLINE </td>
      <td>web窗体工作在脱机方式</td>
    </tr>
    <tr>
      <td>_DLCTL_NO_CLIENTPULL </td>
      <td>web窗体不执行任何客户端的 pull 操作</td>
    </tr>
    <tr>
      <td>_DLCTL_SILENT </td>
      <td>组件对话框、脚本错误对话框静默模式 </td>
    </tr>
    <tr>
      <td>_DLCTL_OFFLINEIFNOTCONNECTED </td>
      <td>如果未连接互联网，浏览器组件将以脱机方式工作</td>
    </tr>
  </table>
  <p>在我们制作web机器人时，可能不希望网页执行脚本、弹出很多对话框或网页、或者不希望下载多余的文件,那<br />
    么这个参数会很有用.<br />
</p>
  <p>在『快手』开发环境中输入常量前缀时,会自动提示相关常量,选<br />
    择常量,然后回车即可输入常量数值,如下:</p>
  <p><img src="img/newform_dlctl_tip.jpg" width="433" height="269" alt="自动提示" /></p>
  <p><strong>3、调用示例：
  </strong></p>
  </p>
  <pre>//创建web窗体
var wb = web.form( winform.static <span class="comment">//这是winform窗体上的一个静态文本框控件 </span>
	,0x4<span class="comment">/*_UIFLAG_NO3DBORDER*/</span> | 0x8<span class="comment">/*_UIFLAG_SCROLL_NO*/</span>  <span class="comment">//禁用边框,禁用滚动条</span>
	,0x10<span class="comment">/*_DLCTL_DLIMAGES*/</span> | 0x40000000<span class="comment">/*_DLCTL_SILENT*/</span> <span class="comment"> //允许下载图片,但是禁用组件对话框、脚本错误对话框等</span>
	); </pre>
</div>
</div></body>
</html>